package com.beiji.usercentert.once;

import com.alibaba.excel.EasyExcel;


import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;


public class ImportExcel {
    public static void main(String[] args) {
        String fileName = "src/main/resources/userInfo.xlsx";
//        readExcelByTableListener(fileName);
        synchronousRead(fileName);
    }


    /**
     * 根据监听器读取
     * @param fileName
     */
    public static void readExcelByTableListener(String fileName) {
        // 写法1：JDK8+ ,不用额外写一个DemoDataListener
        // since: 3.0.0-beta1
        // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
        EasyExcel.read(fileName, TableInfo.class, new TableListener()).sheet().doRead();
    }

    /**
     * 同步返回不推荐，会把大量的数据放在内存中
     */
    public static void synchronousRead(String fileName) {
        // 这里 需要指定读用哪个class去读，然后读取第一个sheet 同步读取会自动finish
        List<TableInfo> list = EasyExcel.read(fileName).head(TableInfo.class).sheet().doReadSync();
        for (TableInfo tableInfo : list) {
            System.out.println(tableInfo);
        }
        //筛选出相同的
        List<String> userNameList = list.stream().map(TableInfo::getUsername).collect(Collectors.toList());
        for (String username : userNameList) {
            if (Collections.frequency(userNameList, username) > 1) {
                System.out.println(username);
            }
        }



    }

}
